import { ObjectLiteral, SelectQueryBuilder } from 'typeorm';

/**
 * 分页原数据
 */
export interface PaginateMeta {
    // 当前页项目数量
    itemCount: number;
    // 项目总数量
    totalItems?: number;
    // 每页显示数量
    perPage: number;
    // 总页数
    totalPages: number;
    // 当前页数
    currentPage: number;
}
/**
 * 分页选项
 */
export interface PaginateOptions {
    // 当前页数
    page: number;
    // 每页数量
    limit: number;
}
/**
 * 分页返回数据
 */
export interface PaginateReturn<E extends ObjectLiteral> {
    meta: PaginateMeta;
    items: E[];
}
/**
 * 为queryBuilder添加查询的回调函数接口
 */
export type QueryHook<Entity> = (
    qb: SelectQueryBuilder<Entity>,
) => Promise<SelectQueryBuilder<Entity>>;
